home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 19 / CD_ASCQ_19_010295.iso / dos / prg / pas / swag / strings.swg / 0075_Dec to Hex and Back.pas < prev    next >
Pascal/Delphi Source File  |  1994-02-15  |  1KB  |  50 lines

  1. { Here is another set of routines to convert Decimal to Hex and vice versa}
  2.  
  3. CONST
  4.   HexString : array [0..15] of char = '0123456789ABCDEF';
  5.  
  6. FUNCTION Dec2Hex (Num : word) : string;
  7. { Returns decimal value as hex string }
  8. VAR
  9.   Loop  : Byte;
  10.   S     : string [10];
  11.  
  12. BEGIN
  13.   S := '';                                 { empty string }   
  14.   for Loop := 1 to 4 do begin              { do 4 chars }
  15.     S := HexString [Lo (Num) and $F] + S;  { use 4 lowest bits } 
  16.     Num := Num shr 4;                      { shift bits right 4 } 
  17.     end;
  18.   Dec2Hex := '$' + S;                      { return string } 
  19. END;
  20.  
  21. FUNCTION Hex2Dec (S : string) : longint;
  22. { returns hexadecimal string as decimal value }
  23. VAR
  24.   Len   : byte absolute S;
  25.   Loop  : byte;
  26.   Li    : longint;
  27.   Num   : longint;
  28.  
  29. BEGIN
  30.   if S [1] = '$' then delete (S, 1, 1);
  31.   if upcase (S [Len]) = 'H' then dec (S [0]);
  32.   Num := 0;
  33.   for Loop := 1 to Len do begin
  34.     Li := 0;
  35.     while
  36.       (HexString [Li] <> S [Loop])         { compare letter }
  37.         and
  38.       (Li < 16)
  39.     do
  40.       inc (Li);                            { inc counter }
  41.     if Li = 16 then begin
  42.       Num := -1;                           { -1 if invalid }
  43.       exit;
  44.       end;
  45.     Num := Num + Li shl ((Len - Loop) * 4);   { add to Num }
  46.     end;
  47.   Hex2Dec := Num;                          { return value }
  48. END;
  49.  
  50.